今天是練習如何用 C# 寫快速排序,想更瞭解快速排序概念的讀者,可以直接看參考資料的介紹 ~
using System;
public class Program
{
public static void Main()
{
int[] ans = {5, 6, 3, 8, 1, 10, 9, 2};
quicksort(ans, 0, ans.Length - 1);
foreach(int a in ans){
Console.Write(a + " ");
}
}
// 快速排序
public static void quicksort(int[] data, int left, int right)
{
if(left >= right){
return;
}
// 排序過程
int i = left, j = right, key = data[left];
while(i != j){
for(;data[j] > key && i < j; j -= 1);
for(;data[i] <= key && i < j;i += 1);
if(i < j){
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
// 更換基準點
data[left] = data[i];
data[i] = key;
// 遞迴處理未排序完成的部分
quicksort(data, left, i - 1);
quicksort(data, i + 1, right);
}
}